A file server is a computer that provides file service relating to the organization of information on storage devices, such as disks. The file server or filer includes a storage operating system that implements a file system to logically organize the information as a to hierarchical structure of directories and files on the disks. Each “on-disk” file may be implemented as a set of data structures, e.g., disk blocks, configured to store information. A directory, on the other hand, may be implemented as a specially formatted file in which information about other files and directories are stored.
A filer may be further configured to operate according to a client/server model of information delivery to thereby allow many clients to access files stored on a server, e.g., the filer. In this model, the client may comprise an application, such as a database application, executing on a computer that “connects” to the filer over a computer network, such as a point-to-point link, shared local area network (LAN), wide area network (WAN), or virtual private network (VPN) implemented over a public network such as the Internet. Each client may request the services of the file system on the filer by issuing file system protocol messages (in the form of packets) to the filer over the network.
A common type of file system is a “write in-place” file system, an example of which is the conventional Berkeley fast file system. In a write in-place file system, the locations of the data structures, such as Modes and data blocks, on disk are typically fixed. An Mode is a data structure used to store information, such as meta-data, about a file, whereas the data blocks are structures used to store the actual data for the file. The information contained in an inode may include, e.g., ownership of the file, access permission for the file, size of the file, file type and references to locations on disk of the data blocks for the file. The references to the locations of the file data are provided by pointers, which may further reference indirect blocks that, in turn, reference the data blocks, depending upon the quantity of data in the file. Changes to the inodes and data blocks are made “in-place” in accordance with the write in-place file system. If an update to a file extends the quantity of data for the file, an additional data block is allocated and the appropriate inode is updated to reference that data block.
Another type of file system is a write-anywhere file system that does not overwrite data on disks. If a data block on disk is retrieved (read) from disk into memory and “dirtied” with new data, the data is stored (written) to a new location on disk to thereby optimize write performance. A write-anywhere file system may initially assume an optimal layout such that the data is substantially contiguously arranged on disks. The optiis mal disk layout results in efficient access operations, particularly for sequential read operations, directed to the disks. A particular example of a write-anywhere file system that is configured to operate on a filer is the Write Anywhere File Layout (WAFL™) file system available from Network Appliance, Inc. of Sunnyvale, Calif. The WAFL file system is implemented within a microkernel as part of the overall protocol stack of the filer and associated disk storage. This microkernel is supplied as part of Network Appliance's Data ONTAP™ software, residing on the filer, that processes file-service requests from network-attached clients.
As used herein, the term “storage operating system” generally refers to the computer-executable code operable on a storage system that manages data access, and, in the case of filers, implements file system semantics (such as the above-referenced WAFL). In this sense, ONTAP software is an example of such a storage operating system implemented as a microkernel. The storage operating system can also be implemented as an application program operating over a general-purpose operating system, such as UNIX or Windows NT®, or as a general-purpose operating system with configurable functionality, which is configured for storage applications as described herein.
Disk storage is typically implemented as one or more storage “volumes” that comprise physical storage disks, defining an overall logical arrangement of storage space. Currently available filer implementations can serve a large number of discrete volumes (150 or more, for example). Each volume is associated with its own file system and, for purposes hereof, volume and file system shall generally be used synonymously. The disks within a volume are typically organized as one or more groups of Redundant Array of Independent (or Inexpensive) Disks (RAID). RAID implementations enhance the reliability/integrity of data storage through the redundant writing of data “stripes” across a given number of physical disks in the RAID group, and the appropriate caching of parity information with respect to the striped data. In the example of a WAFL file system, a RAID 4 implementation is advantageously employed. This implementation specifically entails the striping of data across a group of disks, and separate parity caching within a selected disk of the RAID group. As described herein, a volume typically comprises at least one data disk and one associated parity disk (or possibly data/parity) partitions in a is single disk) arranged according to a RAID 4, or equivalent high-reliability, implementation.
More than one filer can reside on a single network (LAN, WAN, etc.), for access by network-connected clients and servers. Where multiple filers are present on the network, each filer may be assigned responsibility for a certain set of volumes. The filers may be connected in a cluster using a separate physical interconnect or linking communication protocol that passes over the network (e.g. the LAN, etc.). In the event of a failure or shutdown of a given filer, its volume set can be reassigned to another filer in the cluster to maintain continuity of service. In the case of a shutdown, various failover techniques are employed to preserve and restore file service, as described generally in commonly owned U.S. patent application Ser. No. 09/933,883 entitled OPERATED INITIATED GRACEFUL TAKEOVER IN A NODE CLUSTER by Naveen Bali et al and U.S. patent application Ser. No. 09/625,234 entitled NEGOTIATING TAKEOVER IN HIGH AVAILABILITY CLUSTER by Samuel M. Cramer et al., the teachings of which are expressly incorporated herein by reference. Such techniques involve (a) the planned and unplanned takeover of a filer's volumes by a cluster partner filer upon filer shutdown; and (b) the giveback of the taken-over volumes by relinquishing control by the cluster partner filer. A management station can also reside on the network, as a specialized client that includes storage management software used by a system administrator to manipulate and control the storage-handling by networked filers.
A filer can be made more reliable and stable in the event of a system shutdown or other unforeseen problem by employing a backup memory consisting of a non-volatile random access memory (NVRAM). An NVRAM is typically a large-volume solid-state memory array (RAM) having either a backup battery, or other built-in last-state-retention capabilities (e.g. a FLASH memory), that holds the last state of the memory in the event of any power loss to the storage system.
A filer is typically made more reliable and stable in the event of a system shutdown or unforeseen problem by employing a backup memory consisting of a non-volatile random access memory NVRAM. An NVRAM is typically a large-volume, solid-state memory array (RAM) having either a backup battery, or other built-in last-state-retention capabilities (e.g. a FLASH memory), that holds the last state of the memory in the event is of any power loss to the storage system. In a known implementation, each client transaction request processed by the storage operating system is logged to the NVRAM as a journal entry. The NVRAM is loaded with requests until such time as a consistency point (CP) is reached. CPs occur at fixed time intervals, or when other key events arise. In the event of a fault, power loss, or other interruption in the normal flow of information among the client, storage operating system, and the disks, the NVRAM log is replayed to re-perform any requests logged therein for its own filer (and an associated cluster partner filer, if any) between the last CP and an interruption in storage handling. In addition, the log is replayed during reboot. Each time a CP occurs, the requests logged in the NVRAM are subsequently overwritten or otherwise cleared, once the results of the requests are written from the filer's conventional RAM buffer cache to disk. Immediately thereafter, the NVRAM is available for the logging of new requests.
In the event of a shutdown, power failure or other system problem, which interrupts the normal flow of information among the client, storage operating system, and the disks, the NVRAM can be used to recover information logged since the last CP prior to the interruption event.
Computer networks are typically composed of computers that communicate with each other through specific protocols. Each computer or device attached to a network is assigned at least one network-unique name, i.e. a network address. Any device in the network can manage files that are stored on devices which are locally accessible to that device. Additionally, a network device could require access to files that are managed by other network devices within the network.
In known file system implementations, local files—those files which are stored on devices locally accessible to a network device—are identified by a device name and a file name. For example, in a Microsoft Windows® compatible device, a file may be identified by “C:/foo/bar/file.doc.” In this example the device is called C:, which is the name of a disk connected to the Microsoft Windows machine. The file name identifies the directory structure and individual file to be accessed. In this example, the file “file.doc” is stored in the “bar” subdirectory of the “foo” directory. This combination produces a unique file identifier for those files which are locally accessible. Files which are accessed via the network, i.e. non-local files, are identified by the device name and file name as local files are, but are further identified by the address of the computer or network device that manages that file. This combination of network address, device name, and file name produces a network-unique identifier for a particular file.
As part of a network storage system, clients request the services of a filer's file system, i.e. making a data access request, by issuing file system protocol messages (in the form of packets) to the filer over the network. The filer fulfills a data access request by locating and packaging the data, and then sending the data through the network back to the requesting client. In known implementations, the data access request identifies the data through an identifier that contains the network address of the filer, for example “1.2.3.4:C:/foo/bar/file.doc.” In this example, the file named “file.doc” is located in the “/foo/bar” directory on drive C: of the filer whose network address is 1.2.3.4. The data that the client has requested could be physically located anywhere in the network, on any of the possible storage devices accessible through any file server.
A noted disadvantage of prior implementations arises for a client when a filer is taken out the network, and its network address becomes unavailable to other computers or network devices connected to the network. It is possible to reconnect the storage devices that a particular file server manages to another filer, but in doing so, the data identification must change to the network address of the new filer in order to properly locate the data managed by the filer which has been taken out of the network. This change of the data identification can be inconvenient and time-consuming, especially considering that a filer can be taken off of the network for many reasons, including filer upgrade, scheduled maintenance, or unexpected system failure. The ability to transparently access network data before, during, and after storage device reconfiguration to a new filer could vastly increase configuration flexibility and data accessibility, and could decrease downtime resulting from filer or other server failure.
In addition, with the growing demand for electronic file availability comes the challenge of backing up and restoring storage devices that can have extremely large storage capacities. To reduce the downtime associated with the back-up/restore operation, administrators often resort to imposing limits on storage and enforcing quotas. Faster back-up/restore capabilities and more flexibility in terms of adding storage devices can both reduce downtime and decrease the numbers of restrictions imposed on users of the system. Accordingly, the potential inaccessibility of data described above is another disadvantage that impedes these advantageous goals.
Accordingly, it is an object of the invention to provide for a system and method for associating network addresses with volumes so that clients can seamlessly and transparently address I/O operations to the specified network address for a given volume without concern for the network address of the file server managing the particular volume.